import logging
import time

import pyautogui as pag

import pydirectinput as pdg

# 屏幕大小
# size = pag.size()
# print(size)

# 当前鼠标的位置
# mouse_pos = pag.position()

# print(mouse_pos)

# print(pag.onScreen(100,100))


# pag.moveTo(10,10, duration=2)

time.sleep(2)


def get_and_click(image):
    target_pos = pag.locateOnScreen(image)
    goto_pos = pag.center(target_pos)

    pag.moveTo(goto_pos, duration=1)
    # pydirectinput.click()
    pag.click()
    # time.sleep(5)


def move_mouse():
    # 移动鼠标
    # 屏幕矩形的左上角是原点(0,0)
    # 水平向右是X轴的正方向
    # 垂直向下是Y轴的正方向
    # 移动至固定坐标
    pag.moveTo(200, 400, duration=2)
    # 根据新坐标，再x轴向右移动200，向下移动500
    pag.moveRel(200, 500, duration=2)
    # 最终坐标：400,900


def click_mouse():
    """鼠标点击"""
    pag.doubleClick(10, 10)
    pag.rightClick(10, 10)
    pag.leftClick(10, 10)
    # 鼠标按下：也可以传递坐标
    pag.mouseDown()
    # 鼠标释放：也可以传递坐标
    pag.mouseUp()


# move_mouse()


def drag_mouse():
    # 鼠标拖拽
    # pag.mouseDown()
    pag.dragRel(500, 500, duration=3)
    # pag.mouseUp()


def click_btn():
    # 按钮图标
    btn = "images/version_btn.png"
    # 获取屏幕尺寸
    size = pag.size()
    logging.info(f"屏幕大小：{size}")
    pag.moveTo(size.width / 2, size.height / 2, duration=2)
    get_and_click(btn)


def scroll():
    # 负值向下
    # 正值向上
    pag.scroll(-3000)


def copy_and_paste():
    pag.dragRel(0, 100)
    pag.hotkey('ctrl', 'c')
    pag.moveTo(300, 300)
    pag.click()
    pag.hotkey('ctrl', 'v')


def move_vision():
    pdg.moveTo(300, 300, duration=2)
    pdg.click()
    time.sleep(2)
    pdg.press("f1")
    pdg.press("shift")
    time.sleep(2)
    pdg.press("f2")
    pdg.press("shift")
    time.sleep(2)
    pdg.press("left", interval=2)
    # pdg.mouseDown(button=pdg.SECONDARY)
    # pag.dragRel(0, 500, button=pdg.SECONDARY)

"""
# 假如购买了vip
# MVP：
# 1.出售物品
# 2.存储物品
# - 装箱
# - 合并
# - 移动至仓库
# 3.战斗
# # 寻怪：（重点）
# - 方式1：识别拳头，而不用识别怪物，在光标位置截图
# - 方式2（优先）：识别具体的怪物
# 技能释放：（重点）
# - 被动技能：采用固定时间F1，F2，F3按下即可
# # 如何直到自己是否在战斗：非战斗状态太久，就说明被卡主了；
# 4.寻径
# - 如果周围没有怪物，则要随机向地图各个方向走，如果已经有地图全景信息和坐标最好，朝怪物聚居点走；
# - 如果周围有怪物，直接点击怪物；
# - 遇到障碍物，向回撤，然后点击偏移；
# - 到地图边界了，则需要折返；
"""

if __name__ == "__main__":
    # 假如购买了vip
    # MVP：
    # 1.出售物品
    # 2.存储物品
    # - 装箱
    # - 合并
    # - 移动至仓库
    # 3.战斗
    # # 寻怪：（重点）
    # - 方式1：识别拳头，而不用识别怪物，在光标位置截图
    # - 方式2（优先）：识别具体的怪物
    # 技能释放：（重点）
    # - 被动技能：采用固定时间F1，F2，F3按下即可
    # # 如何直到自己是否在战斗：非战斗状态太久，就说明被卡主了；
    # 4.寻径
    # - 如果周围没有怪物，则要随机向地图各个方向走，如果已经有地图全景信息和坐标最好，朝怪物聚居点走；
    # - 如果周围有怪物，直接点击怪物；
    # - 遇到障碍物，向回撤，然后点击偏移；
    # - 到地图边界了，则需要折返；

    # # 需求点：
    # # 非战斗状态
    # 出售物品：点开物品栏（i），打开vip商店，打开贩卖，逐个单元格卖出
    # 存储物品：点vip仓库，将物品转移至空栏
    # 合并：将同名物品装箱合并；
    # 拾取：识别手势，而不是识别物体
    # 寻径（重点）因为在高等级地图怪物稀疏以后，才需要寻径。
    # - 如果周围没有怪物，则要随机向地图各个方向走，如果已经有地图全景信息和坐标最好，朝怪物聚居点走；
    # - 如果周围有怪物，直接点击怪物；
    # - 遇到障碍物，向回撤，然后点击偏移；
    # - 到地图边界了，则需要折返；

    # # 战斗状态
    # 寻怪：（重点）
    # - 方式1：识别拳头，而不用识别怪物，在光标位置截图
    # - 方式2（优先）：识别具体的怪物
    # 技能释放：
    # - 被动技能：采用固定时间F1，F2，F3按下即可
    # - 主动技能：在F1-F2-F3执行完成后，执行F4直到没有蓝
    # # 如何直到自己是否在战斗：非战斗状态太久，就说明被卡主了；

    # 状态管理：
    # 红条：无需处理，由内置插件解决
    # 蓝条：无需，如果要释放主动技能，则需要管理技能释放；
    # 耐力条：绿色条变短，则补充食物

    # 在一张地图上

    # move_mouse()
    # click_btn()
    # drag_mouse()
    # scroll()
    # copy_and_paste()
    move_vision()